package main

import (
	// "demo2/run"
	//"demo2/error1"
	//"demo2/slices"
	//"demo2/generics"
	"demo2/fuzz"
	"fmt"
	"log"
)

func main() {
	fmt.Println("123")
	// run.Run()
	// run.Run1()

	log.SetPrefix("ssj:")
	// 设置日志的抬头

	//==================================================================================================================
	/*
		//以下函数用于错误反馈
			//使用msg，err分别接收string和error数据
		   	msg, err := error1.RErrors("")
		   	if err != nil {
		   		// 如果是有错误的，日志输出错误
		   		log.Fatal(err)
		   		// If you get an error, you use the log package's Fatal function to print the error and stop the program.
		   		// 使用log.Fatal之后程序就终止了
		   	}
		   	fmt.Println(msg) */

	/* msg, err := slices.Hello("ssj")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(msg) */
	//==================================================================================================================
	/*
		//以下函数用于多值反馈
		name := []string{"name1", "name2", "name3"}
		messages, err := slices.Hellos(name)
		if err != nil {
			log.Fatal(err)
		}
		fmt.Println(messages) */

	//==================================================================================================================
	/* //以下函数用于泛型学习
	ints := map[string]int64{
		"first":  34,
		"second": 12,
	}
	floats := map[string]float64{
		"first":  35.98,
		"second": 26.99,
	}

	fmt.Printf("Generic Sums: %v and %v\n",
		generics.SumIntsOrFloats[string, int64](ints),     //[string, int64]这个就是告知函数你的参数类型，如果可以识别则不需要，但是这个不是确定的。
		generics.SumIntsOrFloats[string, float64](floats)) //如果不确定最好把这个带上。

	fmt.Printf("Generic Sums with Constraint: %v and %v\n",
		generics.SumNumbers(ints),
		generics.SumNumbers(floats)) */

	//==================================================================================================================
	//以下函数用于模糊测试
	//input := "The quick brown fox jumped over the lazy dog"
	input := "我爱你"
	rev, revErr := fuzz.Reverse(input)
	doubleRev, doubleRevErr := fuzz.Reverse(rev)
	fmt.Printf("original: %q\n", input)
	fmt.Printf("reversed: %q, err: %v\n", rev, revErr)
	fmt.Printf("reversed again: %q, err: %v\n", doubleRev, doubleRevErr)
}
